<?php

/*
站长好工具宝塔管理员必备站长好工具

这个功能应该很实用且和宝塔用户很对口，大部分是站长用得到
公布PHP端供参考（你们可以写python）

A记录：将域名指向一个IPv4地址（例如：10.10.10.10），需要增加A记录
CNAME记录：如果将域名指向一个域名，实现与被指向域名相同的访问效果，需要增加CNAME记录
MX记录：建立电子邮箱服务，将指向邮件服务器地址，需要设置MX记录
NS记录：域名解析服务器记录，如果要将子域名指定某个域名服务器来解析，需要设置NS记录
TXT记录：可任意填写（可为空），通常用做SPF记录（反垃圾邮件）使用
AAAA记录：将主机名（或域名）指向一个IPv6地址（例如：ff03:0:0:0:0:0:0:c1），需要添加AAAA记录
SRV记录：记录了哪台计算机提供了哪个服务。格式为：服务的名字.协议的类型（例如：_example-server._tcp）
*/

class bt_main{
 //不允许被面板访问的方法请不要设置为公有方法
//推荐linux平台php5.4-5.6 windows下ngnix apache也正常

// 获取域名
public function getip(){
    $domas = $_SERVER['SERVER_NAME']; //暂不知获取方式
    if($domas =='null' || $domas ==''){$domas ="yichaxin.com";}
    return $domas;
 }
 
public function yichaxin(){
$CACHE = "抱歉:查询不到信息"; //初始提示
$doma = _get('ip'); //获取域名
if(!$doma){ $doma = _post('ip'); }
if(!preg_match("/^[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-z]{2,8})$/i", $doma)) {
    return ['state'=>'1001','table'=>$doma];
}
$tipa = _get('dk'); //获取查询类型
if($tipa =='null' || $tipa ==''){ $tipa = _post('dk'); }
$tpli = "|DNS_NS|DNS_A|DNS_AAAA|DNS_MX|DNS_CNAME|DNS_SRV|GETHOSTBYNAME|gethostbyname|";
if(!stristr($tpli,"|{$tipa}|")) {
    return ['state'=>'1002','table'=>$tipa];
}
$doma = strtolower($doma); //类型转大写
$tipa = strtoupper($tipa); //域名转小写
    //return ['state'=>'1004','doma'=>$doma,'tapa'=>$tipa];
switch ($tipa) {
   case "DNS_A":
$CACHE = dns_get_record($doma, DNS_A);
     break;
   case "DNS_CNAME":
$CACHE = dns_get_record($doma, DNS_CNAME);
     break;
   case "DNS_MX":
$CACHE = dns_get_record($doma, DNS_MX);
     break;
   case "DNS_AAAA":
$CACHE = dns_get_record($doma, DNS_AAAA);
     break;
     case "DNS_NS":
$CACHE = dns_get_record($doma, DNS_NS);
     break;
   case "DNS_SRV":
$CACHE = dns_get_record($doma, DNS_SRV);
     break;
   default:
$myip = gethostbyname($doma);
    return ['state'=>'1000','table'=>$myip];
     break;
}

//$CACHE = dns_get_record($doma);
if($CACHE){
//$CECHE = json_encode($CACHE);
 $ii=0; $res = "";
 $res .= "<table cellspacing=\"0\" class=\"table\" cellpadding=\"0\">\r\n";
foreach ($CACHE as $keylist){
$ii++;
if($ii==1){
	$res .= "<tr class=\"tt\">\r\n";
foreach ($keylist as $key=>$val){
$res .= "<td>$key</td>\r\n";
}
	$res .= "</tr>\r\n";
}
	$res .= "<tr>\r\n";
foreach ($keylist as $key=>$val){
$res .= "<td>$val</td>\r\n";
}
	$res .= "</tr>\r\n";
}
$res .= "</table>\r\n";
if($ii<1){
 return ['state'=>'1003'];
} else {
 return array('ip' => $doma, 'dk' => $tipa, 'state' => '1000', 'table' => $res);	
}

  } else {
$myip = gethostbyname($doma);
$tpli = "|DNS_A|DNS_AAAA|DNS_CNAME|GETHOSTBYNAME|gethostbyname|";
if(stristr($tpli,"|{$tipa}|")) {
if($CACHE==$doma){
    return ['state'=>'1003'];
}else{
    return ['state'=>'1000','table'=>$myip];
}
}else{
    return ['state'=>'1005','msg'=>'null'];
} 

 
}
}

}